#ifndef _INDICES_FACTORY_
#define _INDICES_FACTORY_

/********************************************************************
 * IndicesFactory.h 
 * 
 * Descripcion:
 * 		Esta clase permite crear objetos Indice_Sec del tipo pasado por
 * 		parametro
 ******************************************************************/ 

#include "hash_secundario.h"
#include "indice_sec.h"
#include "ind_arbol_clas.h"
#include "excep_arch_inexistente.h"


class IndicesFactory{
	
	
	public:
		
		IndicesFactory();
	
		virtual ~IndicesFactory();
	
		/*
		 * Crea un objeto archivo del tipo pasado por parametro
		 * y lo devuelve. 
		 */
		IndiceSec * crear_archivo(std::string &tipo, 
								std::string& nombre,			
								unsigned int tam_bloque, 
								unsigned int tam_indice,
		                        int num_campo);
		                        
		IndiceSec * crear_archivo(TiposArchivo tipo,
								std::string& nombre,			
								unsigned int tam_bloque, 
								unsigned int tam_indice,
		                        int num_campo);
		                        
		TiposArchivo to_enum(std::string tipo);
		
		/*
		 * Crea un objeto del tipo archivo correspondiente, recuperando
		 * el formato del archivo cuyo nombre es el pasado por parametro
		 */
		//Archivo* hidratar(std::string &nombre) throw(ExcepArchInexistente);
		
	private:
			
		IndicesFactory(IndicesFactory &f);
		
};

#endif
